package com.fourpigeon.utils;

import cn.hutool.core.util.StrUtil;

/**
 * @author MAY
 * 检验密码、手机号、验证码、邮箱格式的工具类
 */
public class FormatUtils {
    /**
     * 手机号正则
     */
    public static final String PHONE_REGULAR_EXPRESSION = "^1[3456789]\\d{9}$";

    /**
     * 邮箱正则
     */
    public static final String EMAIL_REGULAR_EXPRESSION = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$";

    /**
     * 密码正则。4~32位的字母、数字、下划线
     */
    public static final String PASSWORD_REGULAR_EXPRESSION = "^\\w{4,32}$";

    /**
     * 验证码正则, 6位数字或字母
     */
    public static final String CODE_REGULAR_EXPRESSION = "^[a-zA-Z\\d]{6}$";

    /**
     * 检验手机号是否符合规范
     * @param phone 手机号
     * @return
     */
    public static boolean isPhone(String phone){
        return matchOrNot(phone,PHONE_REGULAR_EXPRESSION);
    }

    /**
     * 检验邮箱是否符合规范
     * @param email 邮箱
     * @return
     */
    public static boolean isEmail(String email){
        return matchOrNot(email,EMAIL_REGULAR_EXPRESSION);
    }

    /**
     * 检验验证码是否符合规范
     * @param code 验证码
     * @return
     */
    public static boolean isCode(String code){
        return matchOrNot(code,CODE_REGULAR_EXPRESSION);
    }

    /**
     * 检验密码是否符合规范(4~32位字母数字下划线)
     * @param password 密码
     * @return
     */
    public static  boolean isPassWord(String password){
        return matchOrNot(password,PASSWORD_REGULAR_EXPRESSION);
    }

    /**
     * 匹配字符串是否符合正则表达式，匹配返回true，否则false。
     * @param string 待匹配字符串
     * @param regularStr 正则表达式
     * @return
     */
    private static boolean matchOrNot(String string,String regularStr){
        return StrUtil.isBlank(string) ? false : string.matches(regularStr);
    }

    /**
     * 测试
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(isPhone("19210089705"));
    }
}
